package com.example.networkinteraction.api;

import com.example.networkinteraction.model.UserModel;
import com.example.networkinteraction.response.BasicResponse;
import com.google.gson.JsonObject;
import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Url;

/**
 * Description: API接口定义
 * 如果需要区别对待,可以创建很多这种接口类
 * File: IAPI.java
 * Author: Administrator
 * Create: 2019/3/26 0026 下午 13:52
 */
public interface IAPI {

    /**
     * 基本的Get请求
     *
     * @param path 请求的路径
     *             <p>
     *             http:///xxx.com/path
     * @return BasicResponse<UserModel> UserModel 可以定义成JsonObject,然后自己根据情况解析
     */
    @GET
    Observable<BasicResponse<UserModel>> getObserverOn(@Url String path);

    /**
     * 基本的Get请求
     *
     * @param path 请求的路径
     *             <p>
     *             http:///xxx.com/path
     * @return BasicResponse<JSONObject>
     */
    @GET
    Observable<BasicResponse<JsonObject>> getJSONObjectObserverOn(@Url String path);

    /**
     * 基本的Post请求
     *
     * @param path        <p>
     *                    http:///xxx.com/path
     * @param requestBody
     * @return BasicResponse<UserModel> UserModel 可以定义成JsonObject,然后自己根据情况解析
     */
    @POST
    Observable<BasicResponse<UserModel>> postObserverRequestBody(@Url String path, @Body RequestBody requestBody);

    /**
     * 返回JsonObject类型的Post请求
     *
     * @param path        <p>
     *                    http:///xxx.com/path
     * @param requestBody
     * @return BasicResponse<JSONObject>
     */
    @POST
    Observable<BasicResponse<JsonObject>> postJsonStringObserverRequestBody(@Url String path, @Body RequestBody requestBody);
}
